<?php
// This program is an example on how to use the MZK library for making a BOT
// by sirdarckcat@gmail.com
// d:\xampp\php\php d:\projects\mzk\miobot_base.php
$maestro="jiangquanzhen@hotmail.com";

include("mzk.php");
include("robot_pdo.php");
$p = new robot_pdo();
$t = new MezzengerKlient;
//$t->onLogin = "avisa";
$t->onChatMessage="commet";
$t->debug=true;
$t->init("kris.jiang@hotmail.com","1234567","NLN");
$t->login();
$t->main();
$t->quit();

function new_chat(){
    global $t;
    $t->MessageToNew("kris.jiang1@hotmail.com",'asdasfafasfasf');
}

function avisa(){
	global $t,$maestro;
	$t->onChatMessage_[$t->MessageToNew($maestro,"Hola Maestro")]="procesaMensaje";
}

function get_thread_info($id){
    global $p;
	$sql="select * from commet where id=?";
	$stmt=$p->get_bbs_pdo()->prepare($sql);
	$stmt->execute(array($id));
	return $stmt->fetch();
}

function insert_commet($mail,$message){
    global $p;
	$sql="insert into commet set mail=?,content=?,time=?";
	$stmt=$p->get_bbs_pdo()->prepare($sql);
	$stmt->execute(array($mail,$message,time()));
	return $p->get_bbs_pdo()->lastInsertId();
}

function commet($donde,$que,$cual){
    global $t;
    $que = @split(' ',$que);
    $cual = $t->ProcessMessage($cual);
    echo $msg = trim($cual[1]);
    if($msg[0]=='@'){
        $str=substr($msg,1);
        $id=insert_commet($que[1],$str);
        if($id)$t->SendText($donde,"留言发表成功：".$str);
    }elseif($msg[0]=='!'){
        $query_id=substr($msg,1);
        if(is_numeric($query_id)){
            $thread_info=get_thread_info($query_id);
            if($thread_info){
                $text=$thread_info['content'];
            }else{
                $text="该贴信息不存在";
            }
        }else{
            $text="ID错误";
        }
        $t->SendText($donde,$text);
    }elseif($msg[0]=='#'){
        $nick=substr($msg,1);
        $t->setNick($nick);
    }elseif($msg[0]=='%'){
        new_chat();
    }
}


// Ejemplo del uso de las respuestas
function comandoMaestro($mensaje,$donde){
	global $t;
	$mensaje=@split(' ',$mensaje);
	print_r($mensaje);
	if(isset($mensaje[0])){
		if($mensaje[0][0]=="!"){
			switch(substr($mensaje[0],1)){
				case "di":
					return substr(join(' ',$mensaje),4);
				break;
				case "disculpate":
					return "Perdon Maestro";
				break;
				case "salte":
					$t->exitChat($donde);
					return false;
				break;
				case "cierrate":
					$t->quit();
					exit;
				break;
				case "invita":
					if(isset($mensaje[1]))$t->InviteToChat($donde,$mensaje[1]);
					return false;
				break;
				case "log":
					$inicio=(isset($mensaje[1]))?(int)$mensaje[1]:-1000;
					$fin=(isset($mensaje[2]))?(int)$mensaje[2]:1000;
					return substr($t->tellmylog(),$inicio,$fin);
				break;
				case "dile":
					if(isset($mensaje[1]))$quien=$mensaje[1];
					if(isset($mensaje[2]))$mnsaje=urldecode($mensaje[2]);
					if(isset($quien,$mnsaje))$t->SendText($quien,$mnsaje);
					return false;
				break;
				case "chats":
					$chats="";
					for ($i=0;$i<=$t->sbsindx;$i++){
						if(isset($t->sbsndxs[$i]) && $t->sbsndxs[$i] && is_resource($t->sbsocks[$i])){
							$chats.=$i."\r\n";
							for ($r=0;isset($t->sbconv[$i][$r]);$r++){
								$chats.="\t".$t->sbconv[$i][$r]."\r\n";
							}
							$chats.="\r\n-----\r\n";
						}else{
							$t->sbsndxs[$i]=false;
						}
					}
					return $chats;
				break;
				case "agrega":
					if(isset($mensaje[1]))$t->addContact($mensaje[1]);
					return false;
				break;
				case "borra":
					if(isset($mensaje[1]))$t->delContact($mensaje[1]);
					return false;
				break;
				case "hablale":
					if(isset($mensaje[1]))$t->onChatLoad_[$x=$t->NewChat()]=create_function('$id,$quien','global $t;$t->InviteToChat($id,"'.$mensaje[1].'");');
					return isset($x)?"Chat #$x":false;
				break;
				case "contactos":
					$cont="Todos:\r\n";
					for($i=0;isset($t->mycontacts[$i]);$i++){
						$cont.=$t->mycontacts[$i].",";
					}
					$cont.="\r\n\r\nConectados:\r\n";
					for($i=0;isset($t->onlinefriends[$i]);$i++){
						$cont.=$t->onlinefriends[$i]."\r\n\r\n";
					}
					return $cont;
				break;
				case "google":
					//if(isset($mensaje[1]))return google(urldecode($mensaje[1]));
					return false;
				break;
				case "nick":
					if(isset($mensaje[1]))$t->setNick(substr(join(' ',$mensaje),6));
				break;
				case "ayuda":
					return "!di MENSAJE		-- El bot dice MENSAJE
!disculpate		-- El bot se disculpa
!salte			-- El bot se sale de la conversacion
!cierrate		-- El bot cierra sesion y se va
!invita mail		-- El bot invita a alguien a la conversacion
!log i f		-- El bot muestra el log desde i hasta f
!dile # msg		-- El bot dice el msg al chat #
!chats			-- Muestra los chats activos
!agrega mail		-- Agrega a la lista de contactos a mail
!borra mail		-- Borra de la lista de contactos a mail
!hablale mail		-- Abre un chat con mail
!contactos		-- Te dice los contactos.";
				break;
			}
		}
		return false;
	}
}

// Ejemplo de asumir evento
function procesaMensaje($id,$donde,$que,$cual){
	global $t,$maestro;
	$que = @split(' ',$que);
	if(strstr($cual,'exit')){exit;}
	$cual = $t->ProcessMessage($cual);
	if($que[1]==$maestro && substr($cual[0]["Content-Type"],0,10)=="text/plain"){
		$texto=comandoMaestro($cual[1],$donde);
		if($texto)$t->SendText($donde,$texto);
	}elseif(isset($cual[0]["TypingUser"])){
		$t->SendTyping($donde);
	}elseif($que[1]!=$maestro){
		$t->SendText($donde,("Quien es ese ".urldecode($que[2]).", Maestro? me da miedo"));
	}
}
?>